预处理- USE_VAR(argc); USE_VAR(argv); 的相关问题

问题描述

USE_VAR(argc); USE_VAR(argv); 的相关问题

最近读bash源码发现里面有好多不懂的用法,这是其中的一例,USE_VAR 是一个宏
宏定义如下
#if (__GNUC__ > 2) || (__GNUC__ == 2 && GNUC_MINOR > 8)

define USE_VAR(x) ((void)&(x))

#else

define USE_VAR(x)

#endif
在shell.c的main函数里有这样的几句话
USE_VAR(argc);
USE_VAR(argv);
USE_VAR(env);
USE_VAR(code);
USE_VAR(old_errexit_flag);
#if defined (RESTRICTED_SHELL)
USE_VAR(saverst);
#endif

经过预处理之后的前两句变成
((void)&(argc));
((void)&(argv));

我用的编译器是gcc-4.6.3

不明白的地方,既然预处理之后的代码没有什么作用为什么还写出来?有什么更深层的用意?

时间: 2024-09-18 17:35:52

预处理- USE_VAR(argc); USE_VAR(argv); 的相关问题的相关文章

关于main函数的argc和argv参数

int main(int argc,char *argv[]); 文件名 a.out 那么,命令: ./a.out xx1 xx2 xx3     0      1     2     3 那么, argc = 4(所有参数个数) argv[0] = "./a.out"; argv[1] = "xx1"; argv[2] = "xx2"; argv[3] = "xx3";

C++的argc和argv的问题

问题描述 C++的argc和argv的问题 int main(int argc, char *argv[]) { argc=2; if (argc<2) { cout << "Hi! Why not pass me arguments?n"; } else { for (int k = 1; k!=argc; ++k) cout << "Hello," << argv[k] << "!n";

[C/C++基础知识] main函数的参数argc和argv

该篇文章主要是关于C++\C语言最基础的main函数的参数知识,是学习C++或C语言都必备的知识点.不知道你是否知道该知识?希望对大家有所帮助. 一.main()函数参数 通常我们在写主函数时都是void main()或int main() {..return 0;},但ANSI-C(美国国家标准协会,C的第一个标准ANSI发布)在C89/C99中main()函数主要形式为:(1).int main(void) (2).int main(int argc,char *argv[]) = int

strlen-void GetArgments(int argc, char **argv)

问题描述 void GetArgments(int argc, char **argv) void GetArgments(int argc, char **argv) { int i; for(int i=1;i { if(argv[i][0]=='-') { switch(tolower(argv[i][1])) { case 'p': if(strlen(argv[i])>3) port=atoi(&argv[i][3]); break; case 'h': hostName=&

int main(int argc,char* argv[])详解

argc是命令行总的参数个数      argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数     命令行后面跟的用户输入的参数,比如:     int   main(int   argc,   char*   argv[])     {     int   i;     for   (i   =   0;   i<argc;   i++)     cout<<argv[i]<<endl;     cin>>i;     return   0; 

php中argc和argv的用法

 argc: 整数,用来统计你运行程序时送给main函数的命令行参数的个数* argv: 字符串数组,用来存放指向你的字符串参数的指针数组,每一个元素指向一个参数argv[0] 指向程序运行的全路径名argv[1] 指向在DOS命令行中执行程序名后的第一个字符串argv[2] 指向执行程序名后的第二个字符串argv[argc]为NULL

关于visual studio 的问题

问题描述 关于visual studio 的问题 这里有个关于visual studio的问题,c++语言,win32控制台应用程序,调试不出来,求大神们解答 // 162.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include "iostream" #include "winsock2.h" #include "fstream" #include "process.

深入Main函数中的参数argc,argv的使用详解_C 语言

C/C++语言中的main函数,经常带有参数argc,argv,如下: 复制代码 代码如下: int main(int argc, char** argv) 这两个参数的作用是什么呢?argc 是指命令行输入参数的个数,argv存储了所有的命令行参数.假如你的程序是hello.exe,如果在命令行运行该程序,(首先应该在命令行下用 cd 命令进入到 hello.exe 文件所在目录) 运行命令为: 复制代码 代码如下: hello.exe Shiqi Yu  下面的程序演示argc和argv的使

数据结构算法复习:栈操作相关

RT,纯练手,记录,不多解释,高手飘过. //Code by Pnig0s1992 //Date:2012,3,20 #include <stdio.h> #include <Windows.h> typedef struct Node * ptrNode; typedef ptrNode Stack; typedef int Element_type; struct Node{ Element_type Element; ptrNode pNext; }; Stack Creat