Questions tagged «c-preprocessor»

在编译C和C ++语言程序之前应用的文本宏处理器。此标记还可以用于有关其他衍生自或具有相同功能的编译器/语言的问题,例如Objective-C或C#中的#指令。


5
为什么C预处理程序将单词“ linux”解释为常量“ 1”?
为什么GCC中的C预处理器将单词(小写字母)解释为常量?linux1 test.c: #include <stdio.h> int main(void) { int linux = 5; return 0; } 的结果$ gcc -E test.c(在预处理阶段之后停止): .... int main(void) { int 1 = 5; return 0; } 当然哪个会产生错误。 (顺便说一句:没有#define linux中stdio.h的文件。)
1022 c  linux  gcc  c-preprocessor 



3
为什么讲师编写的所有C文件在第一行都以单个#开头?
我正在阅读一些C课程注释,并且每个 C程序源文件#都在程序的第一行以一个开始。 然后是空白行,然后是其他内容,然后是main函数。 是什么原因#? (现在已经过期了,我真的不能问这个问题。) 这是一个例子: # #include <stdio.h> int main() { printf("Hello, World!"); return 0; }
431 c  c-preprocessor 

4
结合C ++和C-#ifdef __cplusplus如何工作?
我正在一个有很多遗留C代码的项目中。我们也开始使用C ++进行编写,以期最终也转换旧代码。我对C和C ++的交互方式有些困惑。我了解到,用C ++编译器包装C代码extern "C"不会破坏C代码的名称,但是我不确定如何实现这一点。 因此,在每个C头文件的顶部(在包含保护之后),我们有 #ifdef __cplusplus extern "C" { #endif 在底部,我们写 #ifdef __cplusplus } #endif 在这两者之间,我们拥有所有的include,typedef和函数原型。我有几个问题,看我是否正确理解: 如果我有一个C ++文件A.hh,其中包括一个C头文件Bh,包括另一个C头文件Ch,那么该如何工作?我认为,当编译器进入Bh时, __cplusplus将被定义,因此它将包装代码extern "C" (并且__cplusplus不会在此块内定义)。因此,当它进入Ch时, __cplusplus将不会被定义,并且代码也不会被包装在中 extern "C"。它是否正确? 将一段代码包装起来有什么问题 extern "C" { extern "C" { .. } }吗?第二个extern "C" 怎么办? 我们不会在.c文件中放这个包装器,而在.h文件中放。那么,如果一个函数没有原型怎么办?编译器是否认为这是C ++函数? 我们还使用了一些用C编写的第三方代码,并且这些代码没有这种包装。每当我包含该库中的标头时,我都会extern "C"在#include中放一个。这是解决这个问题的正确方法吗? 最后,这是一个好主意吗?还有什么我们应该做的?在可预见的将来,我们将混合使用C和C ++,我想确保我们涵盖了所有基础知识。

14
C中的MIN和MAX
在哪里MIN和MAX在C,规定如果在所有? 一般地并安全地键入这些内容的最佳方法是什么?(首选主流编译器的编译器扩展/内置插件。)
299 c  max  min  c-preprocessor 


6
GCC转储预处理器定义
Наэтотвопросестьответына 堆栈溢出нарусском:Какузнатьсписоквсехопределённыхмакросов? gcc / g ++是否可以从命令行转储其预处理程序定义?我的意思是__GNUC__,__STDC__等等。
248 gcc  g++  c-preprocessor 

11
#pragma pack效果
我想知道是否有人可以向我解释#pragma pack预处理器语句的作用,更重要的是,为什么要使用它。 我检查了MSDN页面,该页面提供了一些见解,但我希望能从有经验的人那里听到更多。我以前在代码中已经看到过,尽管我似乎再也找不到了。



5
如何制作可变参数宏(可变数量的参数)
我想用C编写一个宏,它接受任意数量的参数,而不是特定数量的参数 例: #define macro( X ) something_complicated( whatever( X ) ) X参数的数目在哪里 我需要这个,因为它whatever已重载,可以使用2或4个参数调用。 我尝试两次定义宏,但是第二个定义覆盖了第一个! 我正在使用的编译器是g ++(更具体地说,是mingw)



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.