Jer*_*win 18 c++ syntax gcc header-files
我在.cpp文件中遇到了以下代码.我不理解涉及头文件的构造或语法.我确实认识到这些特定的头文件与Android NDK有关.但是,我认为这个问题是关于C++语法的一般性问题.这些似乎是以某种方式的预处理器命令,因为它们以"#"开头.但是,它们不是典型的#include,#pragma,#ifnf,#define等命令.源文件有1000多个这样的事件,引用了数百个不同的.h,.c,.cpp文件.
typedef int __time_t;
typedef int __timer_t;
# 116 "/home/usr/download/android-ndk-r8b/platforms/android-3/arch-arm/usr/include/machine/_types.h"
# 41 "/home/usr/download/android-ndk-r8b/platforms/android-3/arch-arm/usr/include/sys/_types.h" 2
# 33 "/home/usr/download/android-ndk-r8b/platforms/android-3/arch-arm/usr/include/stdint.h" 2
# 48 "/home/usr/download/android-ndk-r8b/platforms/android-3/arch-arm/usr/include/stdint.h"
typedef __int8_t int8_t;
typedef __uint8_t uint8_t;
Run Code Online (Sandbox Code Playgroud)
编译器(GCC)似乎没有抛出与这些行相关的任何错误.但是,我想了解他们的目的和功能.任何人都可以解释这些吗?
Jos*_*eld 18
这是GCC预处理器的输出.这些线被称为线性标记.他们有语法:
# linenum filename flags
Run Code Online (Sandbox Code Playgroud)
他们被解释为说以下行来自linenum于filename.它们基本上只是帮助您和编译器查看包含行的位置.标志提供了更多信息:
1- 这表示新文件的开始.2- 这表示返回文件(包含另一个文件后).3- 这表示以下文本来自系统头文件,因此应禁止某些警告.4- 这表示以下文本应被视为包含在隐式extern "C"块中.
如果将-E标志赋予g ++,则可以通过预处理自己的程序来查看此输出.
| 归档时间: |
|
| 查看次数: |
367 次 |
| 最近记录: |