相关疑难解决方法(0)

为什么我的讲师写的所有C文件都以#开头?

为什么我的讲师写的所有C文件都以#开头?

我正在阅读一些C课程笔记,每个 C程序源文件都以程序#第一行的单个文件开头.

然后有空格,然后是其他东西后跟main函数.

是什么原因#

(现在这是不合时宜的,我不能真的问这个小伙子.)

这是一个例子(在结束时有一个额外的行#)

#

#include <stdio.h>
int main() {
   printf("Hello, World!");
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

c c-preprocessor

424
推荐指数
1
解决办法
2万
查看次数

CFLAGS与CPPFLAGS

我知道CFLAGS(或CXXFLAGS for C++)是针对编译器的,而CPPFLAGS是由预处理器使用的.

但我仍然不明白其中的区别.

我需要为#include包含的头文件指定一个包含路径 - 因为#include是一个预处理器指令,是我唯一关心的预处理器(CPPFLAGS)吗?

在什么情况下我需要给编译器一个额外的包含路径?

通常,如果预处理器找到并包含所需的头文件,为什么需要告知额外的包含目录?CFLAGS有什么用?

(在我的情况下,我实际上发现这两个允许我编译我的程序,这增加了混乱...我可以使用CFLAGS CPPFLAGS来实现我的目标(至少在autoconf上下文中.)给出了什么?)

autoconf makefile autotools cflags

92
推荐指数
2
解决办法
11万
查看次数

C 预处理器的 Null 指令有什么意义?

因此,在浏览 C99 标准的 n869 草案时,我偶然发现了这一部分:

6.10.7 空指令语义

形式的预处理指令

# new-line
Run Code Online (Sandbox Code Playgroud)

没有效果。

所以,我写了这个程序来测试它:

#
#include <stdio.h>
#

int main(void)
{
  puts("Hello, world!");

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

果然gcc,即使我一直发出警告等,也不会对这段代码感到厌烦。我意识到语言中还有一些其他的结构并不明显,比如初始化器、枚举定义等中允许的额外逗号,但这是有目的的(例如简化代码生成器的编写)。

但是,我看不出这有什么用。任何人都可以想出一个合理的用例/理由来拥有它吗?

c standards

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

标签 统计

c ×2

autoconf ×1

autotools ×1

c-preprocessor ×1

cflags ×1

makefile ×1

standards ×1